//
// Created by Asus on 2025/6/1.
//

#include <iostream>
using namespace std;

//交换的函数模板
template<typename T>
void mySwap(T &a, T&b)
{
    T temp = a;
    a = b;
    b = temp;
}


template<class T> // 也可以替换成typename
//利用选择排序，进行对数组从大到小的排序
void mySort(T arr[], int len)
{
    for (int i = 0; i < len; i++)
    {
        int max = i; //最大数的下标
        for (int j = i + 1; j < len; j++)
        {
            if (arr[max] < arr[j])
            {
                max = j;
            }
        }
        if (max != i) //如果最大数的下标不是i，交换两者
        {
            mySwap(arr[max], arr[i]);
        }
    }
}

template<typename T>
void printArray(T arr[], int len) {
    for (int i = 0; i < len; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

void demo01() {
    int intArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int num = sizeof(intArray) / sizeof(int);
    mySort<int>(intArray, num);
    printArray<int>(intArray, num);
}

int main(int argc, char *argv[]) {
    demo01();
    return 0;
}
